package socket;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;

/*
 * Socket（TCP）
 * 服务端
 * 1.创建服务端+端口
 * 2.接受客户端的连接（阻塞式的）
 * 3.接受数据
 * 客户端
 * 1.创建客户端,必须指定服务器地址以及端口，此时就已经在连接
 * 2.发送数据
 */
public class SocketTest {

	public static void main(String[] args) {
		try {
			SocketServer.init();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

}

class SocketServer{
	public static void init() throws IOException{
		//1.创建服务端+端口
		ServerSocket socket = new ServerSocket(8888);
		//2.接受客户端的一个连接（阻塞式的）
		Socket s = socket.accept();
		System.out.println("接受客户端的一个连接");
		//发送数据
		String msg = "enenejnfjdv";
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
	    bw.write(msg);
	    bw.flush();
	}
	
	public static void multiInit() throws IOException{
		//1.创建服务端+端口
		ServerSocket socket = new ServerSocket(8888);
		//一次只能连一个客户端
		while(true){
		   //2.接受客户端的一个连接（阻塞式的）
		   Socket s = socket.accept();
		   System.out.println("接受客户端的一个连接");
		   //发送数据
		   String msg = "enenejnfjdv";
		   BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
	       bw.write(msg);
	       bw.flush();
		}
	}
}

class SocketClient{
	
	public static void main(String[] args) {
		try {
			SocketClient.init();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	public static void init() throws IOException{
		//1.创建客户端,必须指定服务器地址以及端口，此时就已经在连接
		Socket client = new Socket("localhost",8888);
		BufferedReader br = new BufferedReader(new InputStreamReader(client.getInputStream()));
		String msg = br.readLine();//必须读取一行，不满一行就会等待
		System.out.println(msg);
	}
}
